<html>
<head>
<script>
function handleStorageEvent(e)
{
    parent.log("Subframe received storage event:");
    parent.log("Key           - " + e.key);
    parent.log("New Value     - " + e.newValue);
    parent.log("Old Value     - " + e.oldValue);
    parent.log("url           - " + parent.normalizeURL(e.url));
    parent.log("Storage Area  - " + ((e.storageArea == window.sessionStorage) ? "This window's window.sessionStorage" : "Another window's window.sessionStorage"));
    parent.log("");
    
    if (e.key != "Subframe") {
        parent.log("Subframe about to change sessionStorage...");
        sessionStorage.setItem("Subframe", "SET");
    }
}
</script>
</head>
<body onload="window.addEventListener('storage', handleStorageEvent, false);">
This is the subframe which exists to make sure that both frames of a same security origin receive the event for that origin's sessionStorage object mutating
</body>
</html>
